数据库事务的并发问题
-
脏读
事务A读取了事务B更新的数据,然后B回滚,导致A所得到的数据就是脏数据
-
不可重复读
事务A多次读取同一数据,事务B在事务A多次读取的过程中,对数据提交了更新,导致A多次读取的同一数据时,结果不一致(侧重于修改)
-
幻读
事务A在读取数据时读取了事务B插入的数据,然后事务B回滚后,导致数据A读取的时候出现幻读(幻读侧重于新增或删除)
MYSQL的四种事务隔离级别
事务隔离级别 | 脏读 | 不可重复读 | 幻读 |
读未提交(read-uncommitted) | 是 | 是 | 是 |
不可重复读(read-committed) | 否 | 是 | 是 |
可重复读(repeatable-read) mysql 默认级别 select @@tx_isolation; | 否 | 否 | 是 |
串行化(serializable) 隔离级别并发性极低,开发中很少会用到 | 否 | 否 | 否 |
MYSQL的设置事务隔离级别
set session transaction isolation level read uncommitted;